'use strict';
const crypto = require('crypto');

exports.main = async (event, context) => {
  try {
    const db = uniCloud.database();
    
    // 创建admin集合
    try {
      await db.createCollection('admin');
      console.log('创建admin集合成功');
    } catch (error) {
      console.log('admin集合已存在');
    }
    
    // 创建activation_codes集合
    try {
      await db.createCollection('activation_codes');
      console.log('创建activation_codes集合成功');
      
      // 添加索引
      const codeCollection = db.collection('activation_codes');
      await codeCollection.createIndex({
        code: 1
      }, {
        unique: true,
        name: 'code_unique'
      });
      
      await codeCollection.createIndex({
        createTime: -1
      }, {
        name: 'createTime_index'
      });
      
      await codeCollection.createIndex({
        status: 1
      }, {
        name: 'status_index'
      });
      
      console.log('创建activation_codes索引成功');
    } catch (error) {
      console.log('activation_codes集合或索引已存在');
    }
    
    // 检查是否已存在管理员账号
    const { data: adminData } = await db.collection('admin').get();
    
    if (!adminData || adminData.length === 0) {
      // 创建默认管理员账号
      // 用户名: admin
      // 密码: admin123
      const adminPassword = crypto.createHash('sha256')
        .update('admin123')
        .digest('hex');
        
      await db.collection('admin').add({
        username: 'admin',
        password: adminPassword,
        createTime: Date.now(),
        lastLoginTime: null,
        lastLoginIP: null,
        token: null
      });
      
      console.log('创建默认管理员账号成功');
      return {
        success: true,
        message: '数据库初始化成功，默认管理员账号：admin，密码：admin123'
      };
    }
    
    return {
      success: true,
      message: '数据库已初始化，管理员账号已存在'
    };
  } catch (error) {
    console.error('初始化数据库失败:', error);
    return {
      success: false,
      message: '初始化数据库失败：' + error.message
    };
  }
}; 